Method for automatic updating of software

ABSTRACT

A method for automatically updating software which is used for updating software which is running on a system, by using new software modules, these software modules first being tested, and application modules then being derived from these software modules. The actual new function is implemented by the application modules. The software modules may be received advantageously over a wireless interface. The method according to the present invention is particularly suited for applications where software is used in a motor vehicle. The application module is usually derived from the software module on the basis of the principle of inheritance. The software module is tested by a call instruction using test parameters.

FIELD OF THE INVENTION

The present invention is directed to a method for automatically updating(expanding the functionality of) software.

BACKGROUND INFORMATION

It is already known that it is possible to update software that iscurrently in operation through the use of software modules. To test thesoftware modules, test vectors are used which require a shielded testenvironment.

SUMMARY OF THE INVENTION

The method according to the present invention for automatically updatingsoftware has the advantage over the related art that this updating isperformed in a way that is shielded from the user during operation byusing a test. This prevents, in particular, interruptions in operationduring replacement (renewal) of the software. In addition, it isadvantageous that at least one application module is derived from thesoftware module used for the test and is then ultimately used in thesoftware. This saves on code and resources as well as results in fasterloading of the software modules.

In addition, it is advantageous that this test is arbitrarily scalable.Furthermore, the test is repeatable multiple times without interferingwith operation of the software. The test is performed in particularbefore using new application modules, so that use occurs only by testedapplication modules. The method according to the present invention alsosimplifies step-by-step expansion of the software without resulting inimpairments for a user. The test is also controllable by an applicationwhich is called up and thus alleviates the load on the systemadministration.

It is also advantageous that the method according to the presentinvention permits the use of the principle of inheritance known fromobject-oriented programming. When this principle of inheritance isapplied, the application modules are derivable in a simple manner fromthe software modules that are newly received. In addition, functionsthat do not require testing may then also be added to the applicationmodules. This includes, for example, access to output media such asdisplay screens or loudspeakers.

It is particularly advantageous that the software module, which is usedto update the software, is received via a wireless interface. Thus, themethod according to the present invention is advantageously suitable formobile reception. For example, the software module may be received by adigital radio broadcast method, e.g., DAB (Digital Audio Broadcasting)and then added to the wireless broadcast receiver software. However, themethod according to the present invention is not limited to radiobroadcast receivers. Instead, it may also be used for wirelesstransmitters or any other systems which use software whose functionalityis expandible and which has a loading device, e.g., a wirelessinterface. Thus, an interface to the outside world is needed. The methodaccording to the present invention is thus applicable mainly toplatform-independent software, but compiling, i.e., generating arunnable code should be omitted. As an alternative, it is also possibleto perform the software update according to the present invention via awired access. Examples include networked computers.

It is also advantageous that in deriving the at least one applicationmodule from the software module, functions intended only for the testare overwritten. These are then functions which are suitable only forthe test but are unnecessary or inadequate for normal operation. Forexample, writing to a data file is not tested during the test butinstead only the checking of access to writing is tested.

The test of the software module is advantageously performed by callingup the test parameters. Test parameters thus specify in which situationsthe software module is tested. Particularly critical situations may thusbe tested even if there is only a low probability that these situationswill occur.

Furthermore, it is advantageous that the software monitors the test ofthe software module by setting a variable and repeats the test as afunction of the content of this variable. Thus, even an accidentallyfaulty test may be verified or refuted by performing the test again.

Finally, it is also advantageous that the device for implementing themethod has a processor on which the software runs and which implementsthe method according to the present invention and has a memory fortemporary or permanent storage of data as well as a loading devicedesigned for loading the software module. The loading device mayadvantageously be a wireless interface, so that the software module isreceivable via wireless signals. It is thereby advantageous inparticular that the device is in a vehicle to replace and/or updatesoftware for the various components in the vehicle. This thenpresupposes that the components in the vehicle are interconnected. Tothis end, a bus system may be used, for example, over which the softwaremodules are then distributed to the individual components. In the caseof time-critical automotive components such as an anti-lock brake system(ABS), it is of course necessary for the software to be updatable duringoperation. Interruption in the functioning of the ABS system isunacceptable, so the method according to the present invention isparticularly suitable here.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a device according to the presentinvention, a radio receiver in this case.

FIG. 2 shows a flow chart of the method according to the presentinvention.

DETAILED DESCRIPTION

Due to growing use of processors in an increasing number of systems,e.g., in automotive systems, and due to the ever higher performancelevels demanded of these systems, the software in these processorsystems must be updated and/or replaced regularly. Many of thesesystems, e.g., in a vehicle, are interconnected and have one interfaceto the outside world, e.g., a wireless interface via a radio receiver ora cell phone. Systems such as monitoring systems or electronic householdsystems are also interconnected and have interfaces designed either aswireless interfaces or they are connected to the outside world by wiredcommunication pathways. Then new software modules are received overthese interfaces and brought to the proper systems to replace thesoftware. To take into account security aspects such as access to thesesystems, the functionality of the new software module must be checked,so that the system, the running software, does not suffer, i.e., is notdamaged by the new software module. In the case of running systems suchas a motor vehicle, this software update must be implementable duringoperation. Thus, the testing of these new software modules must takeplace in a manner that is shielded from the user. Therefore, accordingto the present invention, this new software module is tested duringoperation of the software, and then at least one application module isderived as a function of the result of the test and the applicationmodule is used by the software for operation.

FIG. 1 shows a block diagram of a device according to the presentinvention for implementing the method according to the present inventionof automatically updating software. A radio receiver is shown here as anexample, but it is also possible for any other system which has aninterface to the outside and is operated with software to be used toimplement the method according to the present invention—e.g., networkedhousehold appliances or satellites or other isolated systems having atleast one interface.

An antenna 5 is connected to an input of a high-frequency receiver 4. Adata output of high-frequency receiver 4 is connected to a data input ofa signal processor 3. Signal processor 3 is in turn connected to a datainput of a processor 1. Processor 1 is connected to a memory 2 via adata input/output. Processor 1 is connected to a signal processor 6 viaa first data output. The processor is connected to a signal processor 8via a second data output. Signal processor 6 has an output to aloudspeaker 7. Signal processor 8 has an output to a display 9.

Software for operating the radio receiver is stored in memory 2 and runson processor 1. Memory 2 also provides temporary storage of interimresults occurring during operation of the software. Memory 2 is thusused both as a permanent memory and as a temporary memory. It ispossible for memory 2 to have different physical media, e.g., asemiconductor memory for the temporary storage and a magnetic memory,e.g., a hard drive for the permanent storage. A new software module isreceived over antenna 5 via radio broadcast signals, which are digitalin this case. Suitable digital radio broadcast methods for datatransmission include in particular DAB (Digital Audio Broadcasting) andDVG (Digital Video Broadcasting), DRM (Digital Radio Mondiale) as wellas other digital radio broadcasting methods, because with these radiobroadcast methods it is possible to transmit not only the actual audioprograms and optionally television programs but also other multimediadata or text data. These radio broadcast methods are comparativelybroadband, so that it is readily possible to transmit additional databesides the actual radio broadcast programs, and they have a framestructure which allows transmission of almost any data format. This dataalso includes software parts such as the software module that is to beadded to the software which runs on processor 1.

The digital radio broadcast signals are then filtered in high-frequencyreceiver 4, amplified and converted to an intermediate frequency. Thisis followed by digitizing the received broadcast signals. The resultingdigital data stream is then transmitted to signal processor 3 whichperforms channel decoding and source decoding. The useful data from thedigital data stream is then transmitted to processor 1. As analternative, the functions of digital processor 3 may also bedistributed to processor 1 and high-frequency receiver 4. In addition,it is possible for the analog digital conversion to be transmitted fromhigh-frequency receiver 4 to signal processor 3.

Processor 1 then processes the received data and sends it, if necessary,to playback means, loudspeaker 7 and display 9. By appropriate decoding,processor 1 discovers that the software module for updating its ownsoftware is also present among the data. This software module is thentested during operation of the actual software. To do so, an object thatwould like to use the software module is called up. For example, if thesoftware module improves the triggering of display 9, then processor 1calls up an object which displays the data.

A test of the software module is then performed using test parameters.If this test is successful, a corresponding variable is tested in memory2 and at least one application module is derived from the softwaremodule and then executes the new functions. This application module isthen executed by the object and is subsequently also available forrepeated use. The test is repeatable, e.g., when a first test run hasturned out negative.

In deriving the at least one application module, functions intended onlyfor testing in the software module may be overwritten. The derivation isperformed by the principle of inheritance known from informationtechnology.

FIG. 2 shows a flow chart of the method according to the presentinvention for automatically updating software. In method step 10, thesoftware on processor 1 is initialized. In method step 11, a newsoftware module is received via antenna 5 and sent to processor 1 as adata stream. By calling up an object which requires this softwaremodule, it is then recognized that this software module is new and, ifappropriate, that a test is necessary. In method step 12, a check isperformed to determine whether this test is necessary. If this is thecase, then in method step 13, a test of the software module is performedusing test parameters. If it has been found in method step 14 that theoutcome of this test has been positive, then in method step 15, avariable is set in memory 2 indicating that the test has been passed.Then in method step 16, at least one application module is derived fromthe software module and then used by the software to implement the newfunction. Then in method step 17, the application is started with thisnew application module. If it is recognized in method step 14 that theoutcome of the test was negative, then in method step 18 the variable isset in memory 2 accordingly and in method step 19 the test result isoutput, e.g., on display screen 9. Method step 20 terminates the method.If it is found in method step 12 that no test is necessary, the programjumps immediately to method step 17 to start the application. Theapplication may then be started immediately using the software modulebecause, at that point, a derivation is no longer necessary.

As shown here, the principle of inheritance is suitable for deriving atleast one application module from the software module. JAVA, anobject-oriented language, has proven to be particularly important inthis regard. JAVA source code, known as class files, is generated andthen is capable of running on any system having a JAVA virtual machine.The functions and routines implemented by such a class are also referredto as methods.

An important feature of the method according to the present invention isthe use of the principle of inheritance to avoid multiple transmissionof codes. One or more classes having corresponding test routines areassigned to the classes of the existing actual software. Then allclasses, in the simplest case two, namely the test class and theapplication class, are loaded for installation of the software. The testclass contains all application methods that are testable on the targetsystem, e.g., file access authorizations and additional test methodswhich are to be used to test, in advance, critical situations occurringduring operation. This is achieved as explained above by test callinstructions of the basic methods using appropriate test parameters.Since essentially the basic functionalities of the application class aredefined in the test class, the term basic class would also be accuratefor this class.

The actual application class is created by the inheritance process fromthis class. It thus has all the methods of the test class and issupplemented by additional methods which are not testable on the targetsystem or are not intended to be tested. In this class, methods from thetest class which might not have been implemented completely or were onlymodified in the latter for reasons of performing the test may also beoverwritten. The application class also starts the test defined in thetest class, if necessary. The present invention is characterized in thatthe application class and test class are logically allocated to oneanother through the principle of inheritance, in which case theapplication class (application module) uses the methods of the testclass (software module) again to a great extent. This saves on codewhich decreases the amount of time required for loading the software incomparison with independent test modules loaded additionally and alsoalleviates the load on system resources. An inherited class inheritsproperties such as variables and functions from the bequeathing class.This eliminates unnecessary repetition of program code.

1. A method for automatically updating existing software on a targetdevice, the software implemented in an object-oriented manner, themethod comprising: expanding a functionality of the software by addingan additional software module, the additional software module includinga test class and an application class, wherein the test class and theapplication class are derivable from a set of basic classes provided inthe additional software module; wherein the test class implements testroutines by overwriting methods of a basic class, and wherein upondetermining applicability of the test results from executing said testroutines, the application class is derived from the test class or from abasic class, and wherein the application class is derived from the testclass or from the basic class by overwriting methods of said basicclass; testing the test class of the additional software module duringoperation of the software, wherein the testing is automaticallyconducted by the implemented test routines of the test class in order todetermine the applicability of the additional software with respect tothe existing software; and based on the applicability determination fromexecuting said test routines, deriving the application class as afunction of a result of the test and using the application class by theadditional software module for operation of the target device.
 2. Themethod according to claim 1, further comprising receiving the softwaremodule over a wireless interface.
 3. The method according to claim 1,further comprising overwriting functions used only for the test when theat least one application class is derived from the software module. 4.The method according to claim 1, wherein the software module is testedby a call instruction using test parameters.
 5. The method according toclaim 1, further comprising: monitoring, by the software, test of thesoftware module by setting a variable; and repeating the test as afunction of a content of the variable.
 6. A method according to claim 1,wherein the application class includes inherited methods from theadditional software module.
 7. A method according to claim 1, whereinthe test class is received via a function interface.
 8. A device presentin a vehicle for automatically updating software comprising: aprocessor; a memory; wherein the processor and the memory operate thesoftware; a loading device for simultaneously loading an additionalsoftware module and receiving useful data; a bus system connected to theloading device, the bus system configured to distribute the additionalsoftware module to individual vehicle components; and the additionalsoftware module being for one of updating and expanding a functionalityof the software of the individual vehicle components, wherein theadditional software module includes a test class and an applicationclass, and wherein the test class and the application class arederivable from a set of basic classes provided in the additionalsoftware module, and wherein the test class implements test routines byoverwriting methods of a basic class, and wherein upon determiningapplicability of the test results from executing said test routines, theapplication class is derived from the test class or from a basic class,and wherein the application class is derived from the test class or fromthe basic class by overwriting methods of said basic class, and whereinthe testing is for determining the applicability of the additionalsoftware with respect to the existing software, and wherein based on theapplicability determination from executing said test routines, theapplication class is derived as a function of a result of the test andthe application class is used by the additional software module foroperation of at least one of the individual vehicle components.
 9. Thedevice according to claim 8, wherein the loading device includes awireless interface.